@@ -160,7 +160,7 @@ def lensman_photo_upload_api(request): |
||
| 160 | 160 |
# 判断通过 session_id 创建的群组是否存在,如果不存在,则直接创建 |
| 161 | 161 |
group, group_created = GroupInfo.objects.get_or_create(session_id=session_id, group_from=GroupInfo.SESSION_GROUP, defaults={
|
| 162 | 162 |
'group_id': CurtailUUID.uuid(GroupInfo, 'group_id'), |
| 163 |
- 'admin_id': user_id, |
|
| 163 |
+ # 'admin_id': user_id, # 摄影师非管理员,首个扫码进群的用户为管理员 |
|
| 164 | 164 |
'group_name': user.final_nickname, |
| 165 | 165 |
'group_default_avatar': 0, |
| 166 | 166 |
}) |
@@ -100,6 +100,7 @@ def upload_photo(request): |
||
| 100 | 100 |
|
| 101 | 101 |
|
| 102 | 102 |
@logit |
| 103 |
+@transaction.atomic |
|
| 103 | 104 |
def session_join_api(request): |
| 104 | 105 |
""" Session 详情 """ |
| 105 | 106 |
user_id = request.POST.get('user_id', '')
|
@@ -124,9 +125,9 @@ def session_join_api(request): |
||
| 124 | 125 |
user_id = user.user_id |
| 125 | 126 |
|
| 126 | 127 |
# 判断通过 session_id 创建的群组是否存在,如果不存在,则直接创建 |
| 127 |
- group, group_created = GroupInfo.objects.get_or_create(session_id=session_id, group_from=GroupInfo.SESSION_GROUP, defaults={
|
|
| 128 |
+ group, group_created = GroupInfo.objects.select_for_update().get_or_create(session_id=session_id, group_from=GroupInfo.SESSION_GROUP, defaults={
|
|
| 128 | 129 |
'group_id': CurtailUUID.uuid(GroupInfo, 'group_id'), |
| 129 |
- 'admin_id': lensman_id, |
|
| 130 |
+ # 'admin_id': lensman_id, |
|
| 130 | 131 |
'group_name': lensman.final_nickname, |
| 131 | 132 |
'group_default_avatar': 0, |
| 132 | 133 |
}) |
@@ -141,7 +142,7 @@ def session_join_api(request): |
||
| 141 | 142 |
'current_id': current_id, # 通过扫描 session_id 二维码进群的用户,默认可以查看该群组所有照片 |
| 142 | 143 |
'nickname': nickname or user.final_nickname, |
| 143 | 144 |
'avatar': user.avatar, |
| 144 |
- 'admin': group_created, |
|
| 145 |
+ # 'admin': group_created, |
|
| 145 | 146 |
'user_status': GroupUserInfo.PASSED, |
| 146 | 147 |
'passed_at': tc.utc_datetime(), |
| 147 | 148 |
}) |
@@ -150,6 +151,14 @@ def session_join_api(request): |
||
| 150 | 151 |
group_user.user_status = GroupUserInfo.PASSED |
| 151 | 152 |
group_user.save() |
| 152 | 153 |
|
| 154 |
+ # 管理员处理 |
|
| 155 |
+ tobe_admin = not GroupUserInfo.objects.filter(admin=True, status=True).exists() |
|
| 156 |
+ if tobe_admin: |
|
| 157 |
+ group.admin_id = user_id |
|
| 158 |
+ group.save() |
|
| 159 |
+ group_user.admin = True |
|
| 160 |
+ group_user.save() |
|
| 161 |
+ |
|
| 153 | 162 |
# Redis 群组用户数据缓存 |
| 154 | 163 |
group_users = set_group_users_info(group) |
| 155 | 164 |
|
@@ -211,7 +220,7 @@ def session_join_api(request): |
||
| 211 | 220 |
) |
| 212 | 221 |
latest_photo = group_photos.first() |
| 213 | 222 |
|
| 214 |
- return response(200, 'Apply Success', u'申请成功', {
|
|
| 223 |
+ return response(200, 'Apply Join Session Group Success', u'申请加入摄影师群成功', {
|
|
| 215 | 224 |
'current_id': latest_photo and latest_photo.pk or current_id, |
| 216 | 225 |
'photos': [photo.photo_info(user_id) for photo in group_photos], |
| 217 | 226 |
'group_id': group_id, |